/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Recolector;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * Clse principal del Recolector, tiene método main para poder ejecutarla.
 * Se encarga, básicamente, de leer unas URLs y lanzar los distintos recolectores
 * necesarios
 * @author Mikel&Igor
 */
public class RecolectorPrincipal {
    // Lista de URLs de índices que el Recolector va a recorrer
    private static ArrayList<URL> listaURLsPrincipales;
    // Numero de hijos que se van a lanzar
    private static int numHijos = 30;
    //tiempo que se pasan los hijos esperando si no hay nada en la cola
    private static int esperaHijos = 5;
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws MalformedURLException {
        // leer en que índices vamos a buscar
        iniciarURLsPrincipales();
        URL actual;
        Iterator it = listaURLsPrincipales.iterator();
        while (it.hasNext()) { // mientras queden URLs
          actual = (URL) it.next();
          // Crear un Recolector de Enlaces pasándole el índice
          RecolectorEnlaces re = new RecolectorEnlaces(actual);
          // Lanzar recolector enlaces (índices)
          re.start();
        }

        // Lanzar hijos recolectores de temas
        for (int i = 0 ; i < numHijos ; ++i) {
            RecolectorTemas rt = new RecolectorTemas(esperaHijos , i);
            rt.start();
        }

        //Esperar hasta que acaben los hijos (nunca)
    }

    /**
     * Método que se encarga de inicializar el ArrayList de URL's principales
     * De momento lo inicializa con URLs metidas a mano, en un futuro podría
     * aceptar leer las URL de un fichero de configuración.
     * @throws MalformedURLException Si alguna de las url iniciales está mal escrita
     */
    public static void iniciarURLsPrincipales() throws MalformedURLException {
        listaURLsPrincipales = new ArrayList<URL>();
        // 11 Foros de series
        int[] numerosForos = {183 , 184 , 99 , 399 ,
                              128 , 359 , 360 , 398 ,
                              475 , 477 , 294};
        String base = "http://www.vagos.es/forumdisplay.php?f=";

        // Añadir todas las urls
        for (int i = 0 ; i< numerosForos.length ; ++i) {
            listaURLsPrincipales.add(new URL(base+numerosForos[i]));
        }
    }
}
